package org.zjx.log;

import java.util.ArrayList;
import java.util.List;

/**
 * LogManager类用于管理日志级别和日志处理器。
 */
public class LogManager {
    private List<LogHandler> logHandlers = new ArrayList<>();  // 存储日志处理器
    private LogLevel logLevel = LogLevel.INFO;  // 默认日志级别
    private LogFormatter logFormatter = new SimpleLogFormatter();  // 默认日志格式化器

    /**
     * 设置日志级别。
     *
     * @param level 日志级别
     */
    public void setLogLevel(LogLevel level) {
        this.logLevel = level;
    }

    /**
     * 获取当前日志级别。
     *
     * @return 当前日志级别
     */
    public LogLevel getLogLevel() {
        return logLevel;
    }

    /**
     * 设置日志格式化器。
     *
     * @param formatter 日志格式化器
     */
    public void setLogFormatter(LogFormatter formatter) {
        this.logFormatter = formatter;
    }

    /**
     * 获取当前日志格式化器。
     *
     * @return 当前日志格式化器
     */
    public LogFormatter getLogFormatter() {
        return logFormatter;
    }

    /**
     * 添加日志处理器。
     *
     * @param handler 日志处理器
     */
    public void addLogHandler(LogHandler handler) {
        logHandlers.add(handler);
    }

    /**
     * 处理日志消息。
     *
     * @param level 日志级别
     * @param message 日志消息
     */
    public void handleLog(LogLevel level, String message) {
        if (level.ordinal() >= logLevel.ordinal()) {
            for (LogHandler handler : logHandlers) {
                handler.handleLog(level, message);
            }
        }
    }
}
